import axios from 'axios'
import mymd from "@/utils/jiami.js"

import { Notification, MessageBox, Message, Loading } from 'element-ui'
import { tansParams, blobValidate } from "@/utils/blo"
import { saveAs } from 'file-saver'

let downloadLoadingInstance;
// 创建axios实例

const request = axios.create({
  // 请求的公共接口地址
  // baseURL: '/api',
  baseURL: 'https://www.vcanghui.com/',
  // 请求的超时时间
  timeout: 3000
})

// 配置请求拦截和响应拦截
// 添加请求拦截器
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  config.headers = { 'Content-Type': 'multipart/form-data' } // ||josn
  if (config.reqDataType === 'file') {
    config.headers = { 'Content-Type': 'multipart/form-data' }
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
request.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response.data
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error)
})

// 导出axios实例
export default request

// 通用下载方法
export function download(url, params, filename) {
  downloadLoadingInstance = Loading.service({ text: "正在下载数据，请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
  return request.post(url, params, {
    transformRequest: [(params) => { return tansParams(params) }],
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    responseType: 'blob'
  }).then(async (data) => {
    const isLogin = await blobValidate(data);
    if (isLogin) {
      const blob = new Blob([data])
      saveAs(blob, filename)
    } else {
      const resText = await data.text();
      const rspObj = JSON.parse(resText);
      const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
      Message.error(errMsg);
    }
    downloadLoadingInstance.close();
  }).catch((r) => {
    console.error(r)
    Message.error('下载文件出现错误，请联系管理员！')
    downloadLoadingInstance.close();
  })
}
